﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using Database;

namespace Business
{
    public class QuanLyChatRoom
    {
        TrungTamEntities TrungTam;

        /// <summary>
        /// Constructor
        /// </summary>
        public QuanLyChatRoom()
        {
            TrungTam = new TrungTamEntities();
        }

        //////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Thêm người dùng đăng nhập khi họ vừa đăng nhập vào hệ thống, để lấy thông tin cho thành viên trong chatroom
        /// </summary>
        /// <param name="nd"></param>
        /// <returns></returns>
        public bool ThemNguoiDungDangNhap(NguoiDungDangNhap nd)
        {
            try
            {
                TrungTam.AddToNguoiDungDangNhaps(nd);
                TrungTam.SaveChanges();
                return true;
            }
            catch (System.Exception ex)
            {
                return false;
            }
        }

        /// <summary>
        /// Xóa người dùng đăng nhập khi người dùng thoát khỏi hệ thống quản lý
        /// </summary>
        /// <param name="MaNV"></param>
        /// <returns></returns>
        public bool XoaNguoiDungDangNhap(String MaNV)
        {
            var query = (from nd in TrungTam.NguoiDungDangNhaps
                         where nd.MaNV.Equals(MaNV)
                         select nd).First();
            try
            {
                TrungTam.DeleteObject(query);
                TrungTam.SaveChanges();
                return true;
            }
            catch (System.Exception ex)
            {
                return false;
            }
        }

        public bool KiemTraTonTai(String MaNV){
            try
            {
                var query = (from p in TrungTam.NguoiDungDangNhaps
                             where p.MaNV.Equals(MaNV)
                             select p).First();
                //tồn tại trả về true
                return true;
            }
            catch (System.Exception ex)
            {
                //Ngược lại không có thì trả về false
                return false;
            }
        }
        /// <summary>
        /// Hàm lấy danh sách những người dùng đang đăng nhập
        /// </summary>
        /// <returns></returns>
        public List<NguoiDungDangNhap> LayDanhSachNguoiDungDangNhap()
        {
            var query = (from p in TrungTam.NguoiDungDangNhaps
                         select p).ToList();

            return query;
        }

        /// <summary>
        /// Phương thức này dùng để lấy các tin nhắn trong chat room
        /// và show lên ứng dụng
        /// </summary>
        /// <returns></returns>
        public List<ChatRoom> LayNoiDungChatRoom()
        {
            var query = (from chat in TrungTam.ChatRooms
                         select chat);

            return query.ToList<ChatRoom>();
        }

        /// <summary>
        /// Lưu nội dung 1 tin nhắn trong ChatRoom vào CSDL
        /// </summary>
        /// <param name="tinnhan"></param>
        /// <returns></returns>
        public bool LuuTinNhan(ChatRoom tinnhan)
        {
            try
            {
                TrungTam.AddToChatRooms(tinnhan);
                TrungTam.SaveChanges();
                return true;
            }
            catch (System.Exception ex)
            {
                return false;
            }
        }

        public bool XoaNoiDungChat()
        {
            try
            {
                //Xóa dữ liệu và reset auto_increment
                TrungTam.ExecuteStoreCommand("DELETE ChatRoom; DBCC CHECKIDENT('ChatRoom', RESEED, 0);");
                return true;
            }
            catch (System.Exception ex)
            {
                return false;
            }
        }
    }
}
